/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.compassion.action;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;


import java.text.SimpleDateFormat;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;
import org.apache.struts2.ServletActionContext;
import sv.com.compassion.dao.GenericoDAO;
import sv.com.compassion.entidades.Actividad;
import sv.com.compassion.entidades.Asistencia;
import sv.com.compassion.entidades.Cdi;
import sv.com.compassion.entidades.Municipio;
import sv.com.compassion.util.ComunAction;


/** Clase para reporte de asistencia 
* @author grupo de Tesis
*/
public class ReportAsistenciaAction extends ComunAction {
    private GenericoDAO genericoDAO;
    private Cdi cdi;
    
    private String idCdis;
    private String fecIni;
    private String fecFin;
    private String modo;
 /**
 *Constructor.  
 *@param GenericoDAO interface donde se encuentran los métodos para acceder a 
 * a las clases entidades. 
 */ 
public ReportAsistenciaAction(GenericoDAO genericoDAO){
        this.genericoDAO = genericoDAO;
        cdi = new    Cdi();
        
        cdi.setIdMunicipio(new Municipio());
}   
/**
 * Busca el método que se ejecutara
 */ 
    @Override
    public String execute(){
        buscarMetodo(cdi);        
        return null;
    }
       
    @Override    
    public void agregarEntidad(Object o) {
    }
        @Override
    public void borrarEntidad(Object o) {
    }
    @Override
    public void editarEntidad(Object o) {
    }
    @Override
    public void alimentarGrid() {
    }
 /**
 * Método para desplegar el reporte de asistencia
 */   
    @Override
    public void reporteXls() {
        modo = getRequest().getParameter("Modo");
        if(modo.equals("1")){
            modoMensual();
        }else{
            modoAnual();
        }
    }
 /**
 * Método para reporte Mensual, esté modo se selecciona en el mantenimiento
 */   
    public void modoMensual(){
         /////////////////////////////////////
        HSSFWorkbook libro  = null;
        OutputStream out    = null;
        HttpServletResponse response = ServletActionContext.getResponse();
        
        try{
                out = response.getOutputStream();            
                
                String ruta = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/reports/reportAsistenciaSumM.xlt");
                FileInputStream stream = new FileInputStream(ruta); 
                libro = new HSSFWorkbook(stream);     

                response.setHeader("Pragma", "cache");          
                response.setContentType("application/ms-excel");
                response.setHeader("Content-Disposition","attachment;filename=reportAsistenciaSumM.xls");
 
        
        /////////////////////////////////////
        
        HSSFCellStyle styleBordere = libro.createCellStyle();
        HSSFFont fontReport = libro.createFont();
        fontReport.setFontHeightInPoints((short)10);
        styleBordere.setFont(fontReport);
        fontReport.setFontName("Arial");
        styleBordere.setBorderBottom(styleBordere.BORDER_THIN);
        styleBordere.setBorderLeft(styleBordere.BORDER_THIN);
        styleBordere.setBorderRight(styleBordere.BORDER_THIN);
        styleBordere.setBorderTop(styleBordere.BORDER_THIN);
        styleBordere.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        HSSFCellStyle styleBordere2 = libro.createCellStyle();
        styleBordere2.setBorderBottom(styleBordere.BORDER_THIN);
        styleBordere2.setBorderLeft(styleBordere.BORDER_THIN);
        styleBordere2.setBorderRight(styleBordere.BORDER_THIN);
        styleBordere2.setBorderTop(styleBordere.BORDER_THIN);
        styleBordere2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        HSSFCellStyle styleBordereCdi = libro.createCellStyle();
        HSSFFont fontReportCdi = libro.createFont();
        fontReportCdi.setFontHeightInPoints((short)8);
        styleBordereCdi.setFont(fontReportCdi);
        fontReportCdi.setFontName("Arial");
        styleBordereCdi.setBorderBottom(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderLeft(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderRight(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderTop(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setAlignment(HSSFCellStyle.ALIGN_CENTER);
               
        HSSFSheet sheet = libro.getSheet("Hoja1");
        
        HSSFRow row = sheet.getRow(1);
        HSSFCell celda = null;
        
        HSSFRow rowTemp = sheet.getRow(1);
        HSSFCell celdaTemp = null;
        
        Date      today    =   new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy");

        row = sheet.getRow(9);
        celda = row.getCell(1);
        
        HSSFCellStyle styleTemp = celda.getCellStyle();
        
        styleBordere2.setFillBackgroundColor( styleTemp.getFillBackgroundColor() );
        styleBordere2.setFillForegroundColor( styleTemp.getFillForegroundColor() );
        styleBordere2.setFillPattern( styleTemp.getFillPattern() );
        styleBordere2.setFont( libro.getFontAt( styleTemp.getFontIndex() ) );
        
        row = sheet.createRow(3);
        celda = row.createCell(6);
        celda.setCellValue(new HSSFRichTextString(String.valueOf(sdf.format(today))));
        celda.setCellStyle(styleBordere);
        int col = 2;
        int fila  = 9;    
        int columnaFinal = 0;

        
        ////////////////////////////////////
        
        String query="";
        idCdis = getRequest().getParameter("IdCdis");
        fecIni = getRequest().getParameter("FecIni");
        fecFin = getRequest().getParameter("FecFin");
        
        int mesInicial = Integer.parseInt(fecIni.substring(0,2));
       
        int mesFinal = Integer.parseInt(fecFin.substring(0,2));
        
        int mesTemp = mesInicial;
        
        int annio = Integer.parseInt(fecFin.substring(3,7));
        
        while(mesInicial <= mesFinal){
            row = sheet.getRow(fila);
            celda = row.createCell(col++);     
            celda.setCellValue(new HSSFRichTextString(escribirMes(mesInicial) + "/" + String.valueOf(annio)));
            celda.setCellStyle(styleBordere2);
            mesInicial++;
        }
        
        columnaFinal = col;
        celda = row.createCell(col++);
            
        celda.setCellValue(new HSSFRichTextString("Subtotal"));
        celda.setCellStyle(styleBordere2);
        
        mesInicial = mesTemp;
        
        String idCdi = "";
        int ind = 0;
        
        List<Actividad> listaActividad = null;
        List<Asistencia> listaBeneficiario;
        List<Cdi> listaCdi;
        Asistencia b;
        
        int idAct;
        
        String tempIdCdis = idCdis;
                     
        float totalMensual = 0; 
        int acumuladorMensual = 0;
        
        int idRangoEdad = 1;
        
        DecimalFormat df = new DecimalFormat("0.00"); 

        fila  = 10; 
        
        //////////////Impresión de CDI's incluidos/////////////
        
        int contadorLinea = 0;
        int contadorEnter = 0;
        String cdiFinal = "";
        while(idCdis.length() > 1){
            ind = idCdis.indexOf(",");
            idCdi = idCdis.substring(0,ind);
            idCdis = idCdis.substring(ind+1,idCdis.length()); 
            
            query = "SELECT c FROM Cdi c WHERE c.idCdi = '" +idCdi +"'";
            listaCdi = genericoDAO.find(query, null, null);

            cdiFinal = cdiFinal + listaCdi.get(0).getNomCdi() + ",";
            
            contadorEnter++;
            if(contadorEnter == 10){
                cdiFinal = cdiFinal + "\n";
                contadorEnter = 0;
                contadorLinea++;
            }
        }
        
        sheet.addMergedRegion(new Region(19,(short)4,19+contadorLinea,(short)7));
        
        int filaCdi = 19;
        int columnaCdi = 4;
        
        int filaFinalCdi = 19+contadorLinea;
        int columnaFinalCdi = 7;
        
        row = sheet.getRow(filaCdi);
        celda = row.getCell(columnaCdi);
        
        cdiFinal = cdiFinal.substring(0, cdiFinal.length()-1);

        celda.setCellValue(new HSSFRichTextString(cdiFinal));

        while(filaCdi <= filaFinalCdi){
            while(columnaCdi <= columnaFinalCdi){
                row = sheet.getRow(filaCdi);
                celda = row.getCell(columnaCdi);
                celda.setCellStyle(styleBordereCdi);
                columnaCdi++;
            }
            columnaCdi = 4;
            filaCdi++;
        }
        
        idCdis = tempIdCdis;
  
        ///////////////////////////////////////////////////////
 
        while(idRangoEdad <= 5){
            col = 2;
            int acumuladorSubMensual = 0;
            float subTotalMensual = 0; 
            while(mesInicial <= mesFinal){ 
                float totalCdis = 0;
                int acumCdis = 0;     
                while(idCdis.length() > 1){
                    
                    ind = idCdis.indexOf(",");
                    idCdi = idCdis.substring(0,ind);
                    idCdis = idCdis.substring(ind+1,idCdis.length());     
                    
                    query = "SELECT a FROM Actividad a WHERE a.idTutor IN (SELECT t.idTutor FROM Tutor t WHERE t.idCdi = '" + idCdi +"') and a.idTipoActividad = 1 and a.idranEdad = '" + idRangoEdad + "'";
                    listaActividad = genericoDAO.find(query, null, null);
                    if(listaActividad.isEmpty()){ 
                        //acumCdis++;
                        continue;
                    }
                    
                    int numActividades = 0;

                    float asistencia = 0;
                    float totalDias = 0;    
                    float totalAss = 0;
                    int acumulador = 0; 
                    
                    while(listaActividad.size() > numActividades){
                    
                        idAct = listaActividad.get(numActividades).getIdActividad();
                    
                        query = "SELECT x FROM Asistencia x WHERE x.idActividad = '" + idAct + "' and MONTH(x.fecAsistencia) = '" + mesInicial + "' "
                            + "and YEAR(x.fecAsistencia) = '" + annio + "' "
                            + "GROUP BY x.idBeneficiario ORDER BY x.idBeneficiario";
                    
                        listaBeneficiario = genericoDAO.find(query, null, null);
   
                        int i = 0;
                        while(listaBeneficiario.size() > i){
                            b = listaBeneficiario.get(i);
                            asistencia = genericoDAO.countRow("SELECT COUNT(x) FROM Asistencia x WHERE YEAR(x.fecAsistencia) = '" + annio + "' "
                                + "and MONTH(x.fecAsistencia) = '" + mesInicial + "' "
                                + "and x.asistio = 1 "
                                + "and x.idActividad = '" + idAct + "' "
                                + "and x.idBeneficiario = '" + b.getIdBeneficiario().getIdBeneficiario() + "'");
                    
                            totalDias = genericoDAO.countRow("SELECT COUNT(x) FROM Asistencia x WHERE YEAR(x.fecAsistencia) = '" + annio + "' "
                                + "and MONTH(x.fecAsistencia) = '" + mesInicial + "' "
                                + "and x.idActividad = '" + idAct + "' "
                                + "and x.idBeneficiario = '" + b.getIdBeneficiario().getIdBeneficiario() + "'");
                        
                            totalAss = totalAss + ((asistencia/totalDias)*100);
                            
                            if(totalDias != 0) acumulador++;
                                                
                            i++;
                        }
                        
                        numActividades++;
    
                    }    

                    if(acumulador != 0){
                            totalCdis = totalCdis + (totalAss/acumulador);                 
                            acumCdis++;
                    }        
                    
                    totalAss = 0;
                    acumulador = 0;
                }
                
                row = sheet.getRow(fila);
                celda = row.getCell(col++);
                
                if(acumCdis != 0){
                    subTotalMensual = subTotalMensual + (totalCdis/acumCdis);
                    celda.setCellValue(new HSSFRichTextString(df.format(totalCdis/acumCdis)+"%"));
                }else{
                    celda.setCellValue(new HSSFRichTextString("N/A"));
                }
                
                celda.setCellStyle(styleBordere);
                
                if(acumCdis != 0) acumuladorSubMensual++;
                
                idCdis = tempIdCdis;
                totalCdis = 0;
                acumCdis = 0;
                
                mesInicial++;
            }
            mesInicial = mesTemp;
            
            row = sheet.getRow(fila);
            celda = row.createCell(col++);
            if(acumuladorSubMensual != 0){
                totalMensual = totalMensual + (subTotalMensual/acumuladorSubMensual);
                celda.setCellValue(new HSSFRichTextString(df.format(subTotalMensual/acumuladorSubMensual) +"%"));
                //celda.setCellStyle(styleBordere);
                if((subTotalMensual/acumuladorSubMensual)>= 60.00 && (subTotalMensual/acumuladorSubMensual) < 80.00){  
                    HSSFCellStyle styleBordere10 = libro.createCellStyle();

                    rowTemp = sheet.getRow(20);
                    celdaTemp = rowTemp.getCell(1);
        
                    HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                    
                    HSSFFont fontReport2 = libro.createFont();
                    fontReport2.setFontHeightInPoints((short)10);
                    styleBordere10.setFont(fontReport2);
                    fontReport2.setFontName("Arial");
                    styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                    styleBordere10.setFillPattern(styleTempX.getFillPattern());
                    styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                    styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                    styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                    celda.setCellStyle(styleBordere10);
                }else{
                    if((subTotalMensual/acumuladorSubMensual) < 60.00){  
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                        rowTemp = sheet.getRow(19);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }else{
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();

                        rowTemp = sheet.getRow(21);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                        
                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }
                }
            }else{
                
                celda.setCellValue(new HSSFRichTextString("N/A")); 
                
                 HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                 rowTemp = sheet.getRow(19);
                 celdaTemp = rowTemp.getCell(1);
        
                 HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                 HSSFFont fontReport2 = libro.createFont();
                 fontReport2.setFontHeightInPoints((short)10);
                 styleBordere10.setFont(fontReport2);
                 fontReport2.setFontName("Arial");
                 styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                 styleBordere10.setFillPattern(styleTempX.getFillPattern());
                 styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                 styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                 styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                 celda.setCellStyle(styleBordere10);
                
            }          

            if(acumuladorSubMensual != 0 ) acumuladorMensual++;

            subTotalMensual = 0;
            acumuladorSubMensual = 0;
            
            idRangoEdad++;
            fila++;
        }
        
        HSSFCellStyle styleBordere3 = libro.createCellStyle();
        
        row = sheet.getRow(9);
        celda = row.getCell(1);
        
        HSSFCellStyle styleTemp2 = celda.getCellStyle();
        
        styleBordere3.setFont( libro.getFontAt( styleTemp2.getFontIndex() ) );
        styleBordere3.setFillBackgroundColor(HSSFColor.AQUA.index);
        styleBordere3.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        styleBordere3.setFillForegroundColor(HSSFColor.AQUA.index);
        styleBordere3.setBorderBottom(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderLeft(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderRight(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderTop(styleBordere3.BORDER_THIN);
        styleBordere3.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        row = sheet.getRow(fila);
        celda = row.createCell(--col);
        
        if(acumuladorMensual != 0){
            celda.setCellValue(new HSSFRichTextString(df.format(totalMensual/acumuladorMensual) +"%"));
        }else{
            celda.setCellValue(new HSSFRichTextString("N/A"));
        }
        celda.setCellStyle(styleBordere3);
        
        //sheet.addMergedRegion(new Region(fila,(short)1,fila,(short)--col));
        
        row = sheet.getRow(fila);
        celda = row.getCell(1);
        celda.setCellValue(new HSSFRichTextString("TOTALES"));
        celda.setCellStyle(styleBordere3);
        
       /* int j = 2;
        char colCharCh = 'C';
        while(j <= col){
            String colChar = (new StringBuffer().append(colCharCh)).toString();
            row = sheet.getRow(fila);
            celda = row.getCell(j);
            if(j != col) celda.setCellFormula("CONCATENATE(ROUND(("+colChar+"11+"+colChar+"12+"+colChar+"13+"+colChar+"14+"+colChar+"15)/5,2),\"%\")");
            celda.setCellStyle(styleBordere3);
            j++;
            colCharCh = (char) (colCharCh + 1);
        }*/
        
        int k = 2;
        int y = 10;
        Double acumSubMensual = 0.00;
        String valorTemp = "";
        int divisorAcum = 0;
        while(k < columnaFinal){
            while(y <= 14){
                row = sheet.getRow(y);
                celda = row.getCell(k);
                valorTemp = celda.getRichStringCellValue().toString();
                valorTemp = valorTemp.substring(0,valorTemp.length()-1);
                if(!valorTemp.equals("N/")){
                    acumSubMensual = acumSubMensual + Double.valueOf(valorTemp);
                    divisorAcum++;
                }
                y++;
            }
            Double valorPromedio = 0.00;
            row = sheet.getRow(y);
            celda = row.getCell(k);
            if(divisorAcum != 0){
                valorPromedio = acumSubMensual/divisorAcum;
                celda.setCellValue(new HSSFRichTextString(df.format(acumSubMensual/divisorAcum) + "%"));
            }
            else{
                celda.setCellValue(new HSSFRichTextString("N/A"));
            }
            divisorAcum = 0;
            
            if(valorPromedio>= 60.00 && valorPromedio < 80.00){  
                    HSSFCellStyle styleBordere10 = libro.createCellStyle();

                    rowTemp = sheet.getRow(20);
                    celdaTemp = rowTemp.getCell(1);
        
                    HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                    
                    HSSFFont fontReport2 = libro.createFont();
                    fontReport2.setFontHeightInPoints((short)10);
                    styleBordere10.setFont(fontReport2);
                    fontReport2.setFontName("Arial");
                    styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                    styleBordere10.setFillPattern(styleTempX.getFillPattern());
                    styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                    styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                    styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                    celda.setCellStyle(styleBordere10);
                }else{
                    if(valorPromedio < 60.00){  
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                        rowTemp = sheet.getRow(19);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }else{
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();

                        rowTemp = sheet.getRow(21);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                        
                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }
               }
            
            y = 10;
            acumSubMensual = 0.00;
            k++;
        }
        

        libro.write(out);
        out.flush();
        out.close();
            
        }catch(Exception e){
          e.printStackTrace();
        }
    }
 /**
 * Método para reporte Anual, esté modo se selecciona en el mantenimiento.
 */     
    public void modoAnual(){
        /////////////////////////////////////
        HSSFWorkbook libro  = null;
        OutputStream out    = null;
        HttpServletResponse response = ServletActionContext.getResponse();
        
        try{
                out = response.getOutputStream();            
                
                String ruta = ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/reports/reportAsistenciaSumM.xlt");
                FileInputStream stream = new FileInputStream(ruta); 
                libro = new HSSFWorkbook(stream);     

                response.setHeader("Pragma", "cache");          
                response.setContentType("application/ms-excel");
                response.setHeader("Content-Disposition","attachment;filename=reportAsistenciaSumM.xls");
 
        
        /////////////////////////////////////
        
        HSSFCellStyle styleBordere = libro.createCellStyle();
        HSSFFont fontReport = libro.createFont();
        fontReport.setFontHeightInPoints((short)10);
        styleBordere.setFont(fontReport);
        fontReport.setFontName("Arial");
        styleBordere.setBorderBottom(styleBordere.BORDER_THIN);
        styleBordere.setBorderLeft(styleBordere.BORDER_THIN);
        styleBordere.setBorderRight(styleBordere.BORDER_THIN);
        styleBordere.setBorderTop(styleBordere.BORDER_THIN);
        styleBordere.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        HSSFCellStyle styleBordere2 = libro.createCellStyle();
        styleBordere2.setBorderBottom(styleBordere.BORDER_THIN);
        styleBordere2.setBorderLeft(styleBordere.BORDER_THIN);
        styleBordere2.setBorderRight(styleBordere.BORDER_THIN);
        styleBordere2.setBorderTop(styleBordere.BORDER_THIN);
        styleBordere2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        HSSFCellStyle styleBordereCdi = libro.createCellStyle();
        HSSFFont fontReportCdi = libro.createFont();
        fontReportCdi.setFontHeightInPoints((short)8);
        styleBordereCdi.setFont(fontReportCdi);
        fontReportCdi.setFontName("Arial");
        styleBordereCdi.setBorderBottom(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderLeft(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderRight(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setBorderTop(styleBordereCdi.BORDER_THIN);
        styleBordereCdi.setAlignment(HSSFCellStyle.ALIGN_CENTER);
               
        HSSFSheet sheet = libro.getSheet("Hoja1");
        
        HSSFRow row = sheet.getRow(1);
        HSSFCell celda = null;
        
        HSSFRow rowTemp = sheet.getRow(1);
        HSSFCell celdaTemp = null;
        
        Date      today    =   new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy");

        row = sheet.getRow(9);
        celda = row.getCell(1);
        
        HSSFCellStyle styleTemp = celda.getCellStyle();
        
        styleBordere2.setFillBackgroundColor( styleTemp.getFillBackgroundColor() );
        styleBordere2.setFillForegroundColor( styleTemp.getFillForegroundColor() );
        styleBordere2.setFillPattern( styleTemp.getFillPattern() );
        styleBordere2.setFont( libro.getFontAt( styleTemp.getFontIndex() ) );
        
        row = sheet.createRow(3);
        celda = row.createCell(6);
        celda.setCellValue(new HSSFRichTextString(String.valueOf(sdf.format(today))));
        celda.setCellStyle(styleBordere);
        int col = 2;
        int fila  = 9;    
        int columnaFinal = 0;

        
        ////////////////////////////////////
        
        String query="";
        idCdis = getRequest().getParameter("IdCdis");
        fecIni = getRequest().getParameter("FecIni");
        fecFin = getRequest().getParameter("FecFin");
        
        int annioInicial = Integer.parseInt(fecIni);
       
        int annioFinal = Integer.parseInt(fecFin);
        
        int annioTemp = annioInicial;
        
        while(annioInicial <= annioFinal){
            row = sheet.getRow(fila);
            celda = row.createCell(col++);     
            celda.setCellValue(new HSSFRichTextString(String.valueOf(annioInicial)));
            celda.setCellStyle(styleBordere2);
            annioInicial++;
        }
        
        columnaFinal = col;
        celda = row.createCell(col++);
            
        celda.setCellValue(new HSSFRichTextString("Subtotal"));
        celda.setCellStyle(styleBordere2);
        
        annioInicial = annioTemp;
        
        String idCdi = "";
        int ind = 0;
        
        List<Actividad> listaActividad = null;
        List<Asistencia> listaBeneficiario;
        List<Cdi> listaCdi;
        Asistencia b;
        
        int idAct;
        
        String tempIdCdis = idCdis;
                     
        float totalMensual = 0; 
        int acumuladorMensual = 0;
        
        int idRangoEdad = 1;
        
        DecimalFormat df = new DecimalFormat("0.00"); 

        fila  = 10; 
        
        //////////////Impresión de CDI's incluidos/////////////
        
        int contadorLinea = 0;
        int contadorEnter = 0;
        String cdiFinal = "";
        while(idCdis.length() > 1){
            ind = idCdis.indexOf(",");
            idCdi = idCdis.substring(0,ind);
            idCdis = idCdis.substring(ind+1,idCdis.length()); 
            
            query = "SELECT c FROM Cdi c WHERE c.idCdi = '" +idCdi +"'";
            listaCdi = genericoDAO.find(query, null, null);

            cdiFinal = cdiFinal + listaCdi.get(0).getNomCdi() + ",";
            
            contadorEnter++;
            if(contadorEnter == 10){
                cdiFinal = cdiFinal + "\n";
                contadorEnter = 0;
                contadorLinea++;
            }
        }
        
        sheet.addMergedRegion(new Region(19,(short)4,19+contadorLinea,(short)7));
        
        int filaCdi = 19;
        int columnaCdi = 4;
        
        int filaFinalCdi = 19+contadorLinea;
        int columnaFinalCdi = 7;
        
        row = sheet.getRow(filaCdi);
        celda = row.getCell(columnaCdi);
        
        cdiFinal = cdiFinal.substring(0, cdiFinal.length()-1);

        celda.setCellValue(new HSSFRichTextString(cdiFinal));

        while(filaCdi <= filaFinalCdi){
            while(columnaCdi <= columnaFinalCdi){
                row = sheet.getRow(filaCdi);
                celda = row.getCell(columnaCdi);
                celda.setCellStyle(styleBordereCdi);
                columnaCdi++;
            }
            columnaCdi = 4;
            filaCdi++;
        }
        
        idCdis = tempIdCdis;
  
        ///////////////////////////////////////////////////////
 
        while(idRangoEdad <= 5){
            col = 2;
            int acumuladorSubMensual = 0;
            float subTotalMensual = 0; 
            while(annioInicial <= annioFinal){ 
                float totalCdis = 0;
                int acumCdis = 0;     
                while(idCdis.length() > 1){
                    
                    ind = idCdis.indexOf(",");
                    idCdi = idCdis.substring(0,ind);
                    idCdis = idCdis.substring(ind+1,idCdis.length());     
                    
                    query = "SELECT a FROM Actividad a WHERE a.idTutor IN (SELECT t.idTutor FROM Tutor t WHERE t.idCdi = '" + idCdi +"') and a.idTipoActividad = 1 and a.idranEdad = '" + idRangoEdad + "'";
                    listaActividad = genericoDAO.find(query, null, null);
                    if(listaActividad.isEmpty()){ 
                        //acumCdis++;
                        continue;
                    }
                    
                    int numActividades = 0;

                    float asistencia = 0;
                    float totalDias = 0;    
                    float totalAss = 0;
                    int acumulador = 0; 
                    
                    while(listaActividad.size() > numActividades){
                    
                        idAct = listaActividad.get(numActividades).getIdActividad();
                    
                        query = "SELECT x FROM Asistencia x WHERE x.idActividad = '" + idAct + "' " 
                            + "and YEAR(x.fecAsistencia) = '" + annioInicial + "' "
                            + "GROUP BY x.idBeneficiario ORDER BY x.idBeneficiario";
                    
                        listaBeneficiario = genericoDAO.find(query, null, null);
   
                        int i = 0;
                        while(listaBeneficiario.size() > i){
                            b = listaBeneficiario.get(i);
                            asistencia = genericoDAO.countRow("SELECT COUNT(x) FROM Asistencia x WHERE YEAR(x.fecAsistencia) = '" + annioInicial + "' "
                                + "and x.asistio = 1 "
                                + "and x.idActividad = '" + idAct + "' "
                                + "and x.idBeneficiario = '" + b.getIdBeneficiario().getIdBeneficiario() + "'");
                    
                            totalDias = genericoDAO.countRow("SELECT COUNT(x) FROM Asistencia x WHERE YEAR(x.fecAsistencia) = '" + annioInicial + "' "
                                + "and x.idActividad = '" + idAct + "' "
                                + "and x.idBeneficiario = '" + b.getIdBeneficiario().getIdBeneficiario() + "'");
                        
                            totalAss = totalAss + ((asistencia/totalDias)*100);
                            
                            if(totalDias != 0) acumulador++;
                                                
                            i++;
                        }
                        
                        numActividades++;
    
                    }    

                    if(acumulador != 0){
                            totalCdis = totalCdis + (totalAss/acumulador);                 
                            acumCdis++;
                    }        
                    
                    totalAss = 0;
                    acumulador = 0;
                }
                
                row = sheet.getRow(fila);
                celda = row.getCell(col++);
                
                if(acumCdis != 0){
                    subTotalMensual = subTotalMensual + (totalCdis/acumCdis);
                    celda.setCellValue(new HSSFRichTextString(df.format(totalCdis/acumCdis)+"%"));
                }else{
                    celda.setCellValue(new HSSFRichTextString("N/A"));
                }
                
                celda.setCellStyle(styleBordere);
                
                if(acumCdis != 0) acumuladorSubMensual++;
                
                idCdis = tempIdCdis;
                totalCdis = 0;
                acumCdis = 0;
                
                annioInicial++;
            }
            annioInicial = annioTemp;
            
            row = sheet.getRow(fila);
            celda = row.createCell(col++);
            if(acumuladorSubMensual != 0){
                totalMensual = totalMensual + (subTotalMensual/acumuladorSubMensual);
                celda.setCellValue(new HSSFRichTextString(df.format(subTotalMensual/acumuladorSubMensual) +"%"));
                //celda.setCellStyle(styleBordere);
                if((subTotalMensual/acumuladorSubMensual)>= 60.00 && (subTotalMensual/acumuladorSubMensual) < 80.00){  
                    HSSFCellStyle styleBordere10 = libro.createCellStyle();

                    rowTemp = sheet.getRow(20);
                    celdaTemp = rowTemp.getCell(1);
        
                    HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                    
                    HSSFFont fontReport2 = libro.createFont();
                    fontReport2.setFontHeightInPoints((short)10);
                    styleBordere10.setFont(fontReport2);
                    fontReport2.setFontName("Arial");
                    styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                    styleBordere10.setFillPattern(styleTempX.getFillPattern());
                    styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                    styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                    styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                    celda.setCellStyle(styleBordere10);
                }else{
                    if((subTotalMensual/acumuladorSubMensual) < 60.00){  
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                        rowTemp = sheet.getRow(19);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }else{
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();

                        rowTemp = sheet.getRow(21);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                        
                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }
                }
            }else{
                
                celda.setCellValue(new HSSFRichTextString("N/A")); 
                
                 HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                 rowTemp = sheet.getRow(19);
                 celdaTemp = rowTemp.getCell(1);
        
                 HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                 HSSFFont fontReport2 = libro.createFont();
                 fontReport2.setFontHeightInPoints((short)10);
                 styleBordere10.setFont(fontReport2);
                 fontReport2.setFontName("Arial");
                 styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                 styleBordere10.setFillPattern(styleTempX.getFillPattern());
                 styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                 styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                 styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                 styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                 celda.setCellStyle(styleBordere10);
                
            }          

            if(acumuladorSubMensual != 0 ) acumuladorMensual++;

            subTotalMensual = 0;
            acumuladorSubMensual = 0;
            
            idRangoEdad++;
            fila++;
        }
        
        HSSFCellStyle styleBordere3 = libro.createCellStyle();
        
        row = sheet.getRow(9);
        celda = row.getCell(1);
        
        HSSFCellStyle styleTemp2 = celda.getCellStyle();
        
        styleBordere3.setFont( libro.getFontAt( styleTemp2.getFontIndex() ) );
        styleBordere3.setFillBackgroundColor(HSSFColor.AQUA.index);
        styleBordere3.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        styleBordere3.setFillForegroundColor(HSSFColor.AQUA.index);
        styleBordere3.setBorderBottom(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderLeft(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderRight(styleBordere3.BORDER_THIN);
        styleBordere3.setBorderTop(styleBordere3.BORDER_THIN);
        styleBordere3.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        row = sheet.getRow(fila);
        celda = row.createCell(--col);
        
        if(acumuladorMensual != 0){
            celda.setCellValue(new HSSFRichTextString(df.format(totalMensual/acumuladorMensual) +"%"));
        }else{
            celda.setCellValue(new HSSFRichTextString("N/A"));
        }
        celda.setCellStyle(styleBordere3);
        
        //sheet.addMergedRegion(new Region(fila,(short)1,fila,(short)--col));
        
        row = sheet.getRow(fila);
        celda = row.getCell(1);
        celda.setCellValue(new HSSFRichTextString("TOTALES"));
        celda.setCellStyle(styleBordere3);
        
       /* int j = 2;
        char colCharCh = 'C';
        while(j <= col){
            String colChar = (new StringBuffer().append(colCharCh)).toString();
            row = sheet.getRow(fila);
            celda = row.getCell(j);
            if(j != col) celda.setCellFormula("CONCATENATE(ROUND(("+colChar+"11+"+colChar+"12+"+colChar+"13+"+colChar+"14+"+colChar+"15)/5,2),\"%\")");
            celda.setCellStyle(styleBordere3);
            j++;
            colCharCh = (char) (colCharCh + 1);
        }*/
        
        int k = 2;
        int y = 10;
        Double acumSubMensual = 0.00;
        String valorTemp = "";
        int divisorAcum = 0;
        while(k < columnaFinal){
            while(y <= 14){
                row = sheet.getRow(y);
                celda = row.getCell(k);
                valorTemp = celda.getRichStringCellValue().toString();
                valorTemp = valorTemp.substring(0,valorTemp.length()-1);
                if(!valorTemp.equals("N/")){
                    acumSubMensual = acumSubMensual + Double.valueOf(valorTemp);
                    divisorAcum++;
                }
                y++;
            }
            Double valorPromedio = 0.00;
            row = sheet.getRow(y);
            celda = row.getCell(k);
            if(divisorAcum != 0){
                valorPromedio = acumSubMensual/divisorAcum;
                celda.setCellValue(new HSSFRichTextString(df.format(acumSubMensual/divisorAcum) + "%"));
            }
            else{
                celda.setCellValue(new HSSFRichTextString("N/A"));
            }
            divisorAcum = 0;
            
            if(valorPromedio>= 60.00 && valorPromedio < 80.00){  
                    HSSFCellStyle styleBordere10 = libro.createCellStyle();

                    rowTemp = sheet.getRow(20);
                    celdaTemp = rowTemp.getCell(1);
        
                    HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                    
                    HSSFFont fontReport2 = libro.createFont();
                    fontReport2.setFontHeightInPoints((short)10);
                    styleBordere10.setFont(fontReport2);
                    fontReport2.setFontName("Arial");
                    styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                    styleBordere10.setFillPattern(styleTempX.getFillPattern());
                    styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                    styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                    styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                    styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                    celda.setCellStyle(styleBordere10);
                }else{
                    if(valorPromedio < 60.00){  
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();
                        
                        rowTemp = sheet.getRow(19);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();

                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }else{
                        HSSFCellStyle styleBordere10 = libro.createCellStyle();

                        rowTemp = sheet.getRow(21);
                        celdaTemp = rowTemp.getCell(1);
        
                        HSSFCellStyle styleTempX = celdaTemp.getCellStyle();
                        
                        HSSFFont fontReport2 = libro.createFont();
                        fontReport2.setFontHeightInPoints((short)10);
                        styleBordere10.setFont(fontReport2);
                        fontReport2.setFontName("Arial");
                        styleBordere10.setFillBackgroundColor(styleTempX.getFillBackgroundColor());
                        styleBordere10.setFillPattern(styleTempX.getFillPattern());
                        styleBordere10.setFillForegroundColor(styleTempX.getFillForegroundColor());
                        styleBordere10.setBorderBottom(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderLeft(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderRight(styleBordere10.BORDER_THIN);
                        styleBordere10.setBorderTop(styleBordere10.BORDER_THIN);
                        styleBordere10.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    
                        celda.setCellStyle(styleBordere10);
                    }
               }
            
            y = 10;
            acumSubMensual = 0.00;
            k++;
        }
        

        libro.write(out);
        out.flush();
        out.close();
            
        }catch(Exception e){
          e.printStackTrace();
        }
    }
/**
 *@param mesInicial de tipo entero 
 *@return el mes en un tipo de dato cadena. 
 */    
    public String escribirMes(int mesInicial){
        String mes = "";
        switch(mesInicial){
            case 1:
                mes = "Enero";
                break;
            case 2:
                mes = "Febrero";
                break;
            case 3:
                mes = "Marzo";
                break;
            case 4:
                mes = "Abril";
                break;
            case 5:
                mes = "Mayo";
                break;
            case 6:
                mes = "Junio";
                break;
            case 7:
                mes = "Julio";
                break;
            case 8:
                mes = "Agosto";
                break;
            case 9:
                mes = "Septiembre";
                break;
            case 10:
                mes = "Octubre";
                break;
            case 11:
                mes = "Noviembre";
                break;
            default:    
                mes = "Diciembre";
        }
        
        return mes;
    }
}
